package com.campus.help.dto;

import com.campus.help.vo.SecondhandVO;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 二手商品DTO（用于管理端）
 *
 * @author campus-help
 * @since 2025-10-17
 */
@Data
public class SecondHandProductDTO {
    
    private Long id;
    
    /**
     * 商品名称 (映射到 title)
     */
    private String productName;
    
    /**
     * 商品描述
     */
    private String description;
    
    /**
     * 类别ID (映射到 typeId)
     */
    private Long categoryId;
    
    /**
     * 类别名称 (映射到 typeName)
     */
    private String categoryName;
    
    /**
     * 价格
     */
    private BigDecimal price;
    
    /**
     * 原价
     */
    private BigDecimal originalPrice;
    
    /**
     * 成色 (映射到 conditionStatus)
     */
    private String condition;
    
    /**
     * 卖家ID
     */
    private Long sellerId;
    
    /**
     * 卖家姓名
     */
    private String sellerName;
    
    /**
     * 联系方式
     */
    private String contactInfo;
    
    /**
     * 交易地点
     */
    private String location;
    
    /**
     * 商品状态
     */
    private String status;
    
    /**
     * 浏览次数
     */
    private Integer viewCount;
    
    /**
     * 收藏次数
     */
    private Integer favoriteCount;
    
    /**
     * 商品图片
     */
    private String images;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdAt;
    
    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
    
    /**
     * 从VO转换为DTO
     */
    public static SecondHandProductDTO fromVO(SecondhandVO vo) {
        if (vo == null) {
            return null;
        }
        
        SecondHandProductDTO dto = new SecondHandProductDTO();
        dto.setId(vo.getId());
        dto.setProductName(vo.getTitle());  // 字段映射
        dto.setDescription(vo.getDescription());
        dto.setCategoryId(vo.getTypeId());  // 字段映射
        dto.setCategoryName(vo.getTypeName());  // 字段映射
        dto.setPrice(vo.getPrice());
        dto.setOriginalPrice(vo.getOriginalPrice());
        dto.setCondition(vo.getConditionStatus());  // 字段映射
        dto.setSellerId(vo.getSellerId());
        dto.setSellerName(vo.getSellerName());
        
        // 组合联系方式
        String contactInfo = "";
        if (vo.getPhone() != null && !vo.getPhone().isEmpty()) {
            contactInfo = vo.getPhone();
        } else if (vo.getWechat() != null && !vo.getWechat().isEmpty()) {
            contactInfo = vo.getWechat();
        } else if (vo.getQq() != null && !vo.getQq().isEmpty()) {
            contactInfo = vo.getQq();
        }
        dto.setContactInfo(contactInfo);
        
        dto.setLocation(vo.getLocation());
        dto.setStatus(vo.getStatus());
        dto.setViewCount(vo.getViewCount());
        dto.setFavoriteCount(vo.getFavoriteCount());
        dto.setImages(vo.getImages());
        dto.setCreatedAt(vo.getCreateTime());
        dto.setUpdatedAt(vo.getUpdateTime());
        
        return dto;
    }
}

